﻿using UnityEngine;
using UnityEditor;

// FieldOfView 组件的自定义编辑器
[CustomEditor(typeof(FieldOfView))]
public class FieldOfViewEditor : Editor
{
    // 在场景视图中绘制GUI
    void OnSceneGUI()
    {
        // 获取当前编辑的目标对象（FieldOfView组件）
        FieldOfView fow = (FieldOfView)target;
        
        // 设置绘制颜色为白色
        Handles.color = Color.white;
        
        // 计算视野的左右边界方向向量
        // viewAngleA: 视野左边界方向（负角度方向）
        Vector3 viewAngleA = fow.DirFromAngle(-fow.viewAngle / 2, false);
        // viewAngleB: 视野右边界方向（正角度方向）
        Vector3 viewAngleB = fow.DirFromAngle(fow.viewAngle / 2, false);
        
        // 绘制视野范围的扇形弧线
        // 参数说明：
        // - 中心点位置：fow.transform.position
        // - 法线方向：Vector3.up (Y轴向上)
        // - 起始方向：viewAngleA
        // - 扇形角度：fow.viewAngle
        // - 扇形半径：fow.viewRadius
        Handles.DrawWireArc(fow.transform.position, Vector3.up, viewAngleA, fow.viewAngle, fow.viewRadius);
        
        // 绘制从中心点到左边界的线段
        Handles.DrawLine(fow.transform.position, fow.transform.position + viewAngleA * fow.viewRadius);
        
        // 绘制从中心点到右边界的线段
        Handles.DrawLine(fow.transform.position, fow.transform.position + viewAngleB * fow.viewRadius);
        
        // 注意：这里绘制的是视野范围的示意图形
        // 实际游戏中的视野检测逻辑应该在FieldOfView脚本中实现
    }
}